package edu.scau.pos.service;

import edu.scau.pos.vo.ProductVo;
import edu.scau.pos.vo.SaleLineItemVo;
import edu.scau.tool.domain.FileInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface ProductService {
    ProductVo findProductBySn(String productSn);

    List<ProductVo> findAllProductAndStock();
    List<Map<String, List<ProductVo>>> listAll();
    List<ProductVo> findProductList(ProductVo productVo);
    int insertProduct(ProductVo productVo);
    int updateProduct(ProductVo productVo);
    int deleteProductBySn(String productSn);
    boolean isExisted(String productSn);

    /**
     * 通过Sn查找库存
     * @param productSn
     * @return
     */
    int findStockBySn(String productSn);

    /**
     * 插入商品信息同时设置库存
     * @param productVo
     * @return
     */
    int insertProductAndSku(ProductVo productVo);

    int batchUpdateStock(List<SaleLineItemVo> saleLineItemVoList);
    int batchAddStock(List<SaleLineItemVo> saleLineItemVoList);

     String getSkuCodeFromProductSn(String productSn);
     List<Map<String,List<ProductVo>>> AggregateProductList(List<ProductVo> productVoList);
     List<Map<String,List<ProductVo>>> AggregateProductListLimitOne(List<ProductVo> productVoList);

    List<Map<String, List<ProductVo>>> getProductOfCategory(long categoryId);

    /**
     * 上传图片
     * @param file
     * @return
     */
    String uploadFile(MultipartFile file);

    List<Map<String, List<ProductVo>>> listAllOfOne();

    List<ProductVo> listAllOfDb();

    List<Map<String, List<ProductVo>>> listAllOfOneByCategory(long categoryId);

    List<ProductVo> listAllOfOneByProductName(String productName);
}
